力扣|Q997找法官FindTheTownJudge
全部标签本题为1月15日力扣每日一题题目来源:力扣第82题题目tag:链表双指针题面题目描述给定一个已排序的链表的头head,删除原始链表中所有重复数字的节点,只留下不同的数字。返回已排序的链表。示例示例1输入:head=[1,2,3,3,4,4,5]输出:[1,2,5]示例2输入:head=[1,1,1,2,3]输出:[2,3]提示链表中节点数目在范围$[0,300]$内$-100\leqNode.val\leq100$题目数据保证链表已经按升序排列思路分析本题要做的其实就两件事,一是在链表中找到重复元素,二是删除链表的一些元素.第一件事很好完成,只需要在编译时看一看当前元素和后一个元素的值是否相等
题目:一个机器人位于一个mxn网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用1和0来表示。示例1:输入:obstacleGrid=[[0,0,0],[0,1,0],[0,0,0]]输出:2解释:3x3网格的正中间有一个障碍物。从左上角到右下角一共有2条不同的路径:向右->向右->向下->向下向下->向下->向右->向右示例2:输入:obstacleGrid=[[0,1],[0,0]]输出:1提示:
617.合并二叉树(经典)合并二叉树是操作两棵树的题目里面很经典的,如何对两棵树遍历以及处理?给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为NULL的节点将直接作为新二叉树的节点。示例1:注意:合并必须从两个树的根节点开始。思路参考:https://programmercarl.com/0617.%E5%90%88%E5%B9%B6%E4%BA%8C%E5%8F%89%E6%A0%91.html如何同时遍历两个二叉树呢?其实和遍历一个树逻辑是一
必会基础部分👇👇👇👇👇👇,可以收藏下来慢慢看。文章目录一、易懂贪心算法分配问题455.分发饼干分发糖果区间问题435.无重叠区间练习题605.种花问题452.用最少数量的箭引爆气球763.划分字母区间122.买卖股票最佳时机Ⅱ406.根据身高重建队列665.非递减数列二、玩转双指针经典题目167.两数之和Ⅱ88.合并两个有序数组142.环形链表Ⅱ76.最小覆盖子串练习题680.验证回文字符串Ⅱ633.平方数之和524.通过删除字母匹配到字典里最长单词三、二分查找经典题目69.x的平方根34.在排序数组中查找元素的第一个和最后一个位置81.搜索旋转排序数组Ⅱ练习题目154.寻找旋转排序数组的最小
《LeetCode力扣练习》代码随想录——栈与队列(前K个高频元素—Java)刷题思路来源于代码随想录347.前K个高频元素堆classSolution{publicint[]topKFrequent(int[]nums,intk){if(nums.length==1){returnnums;}MapInteger,Integer>map=newHashMap>();for(intnum:nums){map.put(num,(map.getOrDefault(num,0)+1));}PriorityQueueint[]>heap=newPriorityQueue>((o1,o2)->o1[1]
刷题打卡,第二十八天题目一、1790.仅执行一次字符串交换能否使两个字符串相等题目二、328.奇偶链表题目三、148.排序链表题目一、1790.仅执行一次字符串交换能否使两个字符串相等原题链接:1790.仅执行一次字符串交换能否使两个字符串相等题目描述:给你长度相等的两个字符串s1和s2。一次字符串交换操作的步骤如下:选出某个字符串中的两个下标(不必不同),并交换这两个下标所对应的字符。如果对其中一个字符串执行最多一次字符串交换就可以使两个字符串相等,返回true;否则,返回false。/示例1:输入:s1=“bank”,s2=“kanb”输出:true解释:例如,交换s2中的第一个和最后一个
文章目录一、定义二、LRU模拟实现二、代码实现一、定义LRU是LeastRecentlyUsed的缩写,意思是最近最少使用,它是一种Cache替换算法。Cache的容量有限,因此当Cache的容量用完后,而又有新的内容需要添加进来时,就需要挑选并舍弃原有的部分内容,从而腾出空间来放新内容。LRUCache的替换原则就是将最近最少使用的内容替换掉。二、LRU模拟实现146.LRU缓存下面我们就借力扣的这道题来简单实现一个题目中要求我们以O(1)的时间复杂度来完成,查找的话我们首先肯定会想到哈希表,但又涉及一个问题,我们查找完之后还需要更新一下刚刚查找数据的位置,将这个数据置为是新的数据,我们如何
typedefpairPII;boolst[1100];inth[11000000],ne[11000000],w[11000000],e[11000000],idx;intdist[50][50];classSolution{public:voidadd(inta,intb,intc){e[idx]=b,ne[idx]=h[a],w[idx]=c,h[a]=idx++;}voidheap_dijkstra(intindex,intstart){dist[index][start]=0;priority_queue,greater>heap;heap.push({0,start});while
Problem:416.分割等和子集文章目录题目描述思路解题方法复杂度Code题目描述思路该题目可以归类为0-1背包问题,具体到细节可以再归纳为背包是否装满问题1.首先判断数组元素和的奇偶性(奇数则不能划分)2.我们定义一个二维布尔类型数组,用于记录每一阶段的可选状态3.针对于动态转移方程:我们要判断最终是否可以选取一些数使其和为原来数组元素和的一半,即通过一层一层的选择数(状态转移),判断最终状态是否可达(能否有一组数使得其和为原来数组元素和的一半)每一个位置都会有选与不选两种状态,若选取则dp[i][j]==dp[i-1][j-nums[i]],若不选取则dp[i][j]==dp[i-1]
1901.寻找峰值II文章目录【算法】在二维不单调的矩阵上二分查找——力扣1901.寻找峰值II问题描述示例解决思路步骤一:列转行步骤二:回到一维数组上的寻找峰值的思路步骤三:二分搜索代码实现二分示意图二分初始的状态二分更新说明二分更新后的状态性能分析【算法】在二维不单调的矩阵上二分查找——力扣1901.寻找峰值II问题描述给定一个从0开始编号的mxn矩阵mat,其中任意两个相邻格子的值都不相同。峰值是指那些严格大于其相邻格子(上、下、左、右)的元素。需要找出任意一个峰值mat[i][j]并返回其位置[i,j]。示例示例1:输入:mat=[[1,4],[3,2]]输出:[0,1]解释:3和4都